package cqrtplm.service;

import cqrtplm.entity.RtMbomCodeDO;
import org.flowable.engine.delegate.DelegateExecution;

import java.math.BigInteger;

public interface RTChangeNoticeService {
    void createECR(String workFlowContainerId) throws Exception;

    void createECN(String workFlowContainerId,String conditionBranch) throws Exception;

    void collectChangeObjects(String workFlowContainerId);

    void collectChangeMboms(String workFlowContainerId) throws Exception;

    void checkRelateECRStatus(String workFlowContainerId);

    void checkChangeStatus(String workFlowContainerId,String targetStatusKey);

    void updateAppointSupplier(String workFlowContainerId) throws Exception;

    void refreshStatusRequire(String workFlowContainerId) throws Exception;

    void setEcnRelevanceChgAfterObjectSpecifyState(BigInteger ecnId, String targetLifeCycleStateKey);

    void setSecVersionStatus(BigInteger ecnId,String targetLifeCycleStateKey);
    /**
     * 流程分支控制
     * @param ecnId
     * @param conditionBranch
     */
    void setBranchControl(BigInteger ecnId,String conditionBranch, DelegateExecution execution);
    /**
     * 批量更新模组信息
     * @param workFlowContainerId
     */
    void batchModifyModule(String workFlowContainerId);

    /**
     * 将变更表单中的数据汇总保存变更总表
     * @param workFlowContainerId
     * @throws Exception
     */
    void collectChangeTargetData(String workFlowContainerId) throws Exception;

    /**
     * 自动设置参与者
     * @param workFlowContainerId
     */
    void autoSetParticipants(String workFlowContainerId,String conditionStr,DelegateExecution execution);

    /**
     * BOM发布校验
     * @param workFlowContainerId
     */
    void checkEbomRelease(String workFlowContainerId);

    /**
     * SRM OA SAP查询成品码状态
     * @param mbomCode
     * @return
     */
    Object getMBOMStatus(String mbomCode);

    /**
     * 物料选点流程更新BOM属性
     * @param workFlowContainerId
     * @param conditionStr
     */
    void updatePartBomAttr(String workFlowContainerId,String conditionStr);
}
